home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 104_01 / c9.c < prev    next >
Text File  |  1980-01-01  |  3KB  |  188 lines

  1. /*    >>>>> start of c9 <<<<<<    */
  2. #ifndef    TRUE    /* check to see if include file is needed */
  3. #include <C.DEF>
  4. #endif
  5.  
  6. /*    Add the primary and secondary registers    */
  7. /*    (results in primary) */
  8. add()
  9. {
  10.     pop();
  11.     ol("dad\td");
  12.     }
  13. /*    Subtract the primary register from secondary */
  14. /*    (results in primary) */
  15. sub()
  16. {
  17.     ccall("@sub");
  18.     }
  19. /*    Multiply the primary and secondary registers */
  20. /*    (results in primary) */
  21. mult()
  22. {
  23.     ccall("@mult");
  24.     }
  25. /*    Divide the secondary register by the primary */
  26. /*    (quotient in primary, remainder in seconday) */
  27. div()
  28. {
  29.     ccall("@div");
  30.     }
  31. /*    Compute remainder (mod) of seconday by primary */
  32. /*        (remainder in primary, quotient ient in secondary) */
  33. mod()
  34. {
  35.     div();
  36.     swap();
  37.     }
  38. /* Inclusive 'or' the primary and the secondary registers */
  39. /*    (results in primary) */
  40. or()
  41. {
  42.     ccall("@or");
  43.     }
  44. /* Exxclusive 'or' then primary and the secondary registers */
  45. /*    (results in primary)    */
  46. xor()
  47. {
  48.     ccall("@xor");
  49.     }
  50. /*    'and' the primary and secondary registers */
  51. /*    (results in primary) */
  52. and()
  53. {
  54.     ccall("@and");
  55.     }
  56. /*    Arithmetic shift right the secondary register number of */
  57. /*        times in primary (results in primary ) */
  58. asr()
  59. {
  60.     ccall("@asr");
  61.     }
  62. /*    arithmetic left shift the secondary register number of */
  63. /*        times in primary (results in primary) */
  64. asl()
  65. {
  66.     ccall("@asl");
  67.     }
  68. /*    From two's complement of primary register */
  69. neg()
  70. {
  71.     call("@neg");
  72.     }
  73. /*    form one's complement of primary register */
  74. com()
  75. {
  76.     call("@com");
  77.     }
  78. pre_inc(lval)
  79. int *lval;
  80. {
  81.     call("@preinc");
  82.     inc_def(lval);
  83.     }
  84. post_inc(lval)
  85. int *lval;
  86. {
  87.     call("@postinc");
  88.     inc_def(lval);
  89.     }
  90. pre_dec(lval)
  91. int *lval;
  92. {
  93.     call("@predec");
  94.     inc_def(lval);
  95.     }
  96. post_dec(lval)
  97. int *lval;
  98. {
  99.     call("@postdec");
  100.     inc_def(lval);
  101.     }
  102. inc_def(lval)
  103. int *lval;
  104. {
  105.     char *ptr;
  106.     int value;
  107.  
  108.     ptr=lval[0];
  109.     if (ptr[ident] == pointer && ptr[indcnt] != lval[1]) value=0x80;
  110.     else value=0;
  111.     value=value | data_size(lval);
  112.     if (ptr[type] == cint && ptr[ident] != pointer) value=value | 0x80; 
  113.     defbyte();
  114.     outhex(value);
  115.     nl();
  116.     }
  117.  
  118. /*    following are the conditional operators */
  119. /*    they compare the seconday register against the primary */
  120. /*    and put a leteral 1 in the primary if the condition is */
  121. /*    true otherwise the clear the primary register */
  122. /*    change to not condition */
  123. nlogical()
  124. {
  125.     call("@nlog");
  126.     }
  127. /*    test for logical and */
  128. land()
  129. {
  130.     ccall("@land");
  131.     }
  132. /*    test for logical or */
  133. lor()
  134. {
  135.     ccall("@lor");
  136.     }
  137. /*    test for equal */
  138. eq()
  139. {
  140.     ccall("@eq");
  141.     }
  142. /*    test for not equal */
  143. ne()
  144. {
  145.     ccall("@ne");
  146.     }
  147. /*    test for less than (signed) */
  148. lt()
  149. {
  150.     ccall("@lt");
  151.     }
  152. /*    tet for less than or equal to (signed) */
  153. le()
  154. {
  155.     ccall("@le");
  156.     }
  157. /*    test for greater than (signed) */
  158. gt()
  159. {
  160.     ccall("@gt");
  161.     }
  162. /*    test for greater than or or equal (signed) */
  163. ge()
  164. {
  165.     ccall("@ge");
  166.     }
  167. /*    test for less than (unsigned) */
  168. ult()
  169. {
  170.     ccall("@ult");
  171.     }
  172. /*    Test for lees than or equal to (unsigned) */
  173. ule()
  174. {
  175.     ccall("@ule");
  176.     }
  177. /*    test for greater than (unsigned) */
  178. ugt()
  179. {
  180.     ccall("@ugt");
  181.     }
  182. /*    test for greater than or equal to (unsigned) */
  183. uge()
  184. {
  185.     ccall("@uge");
  186.     }
  187.  
  188.